1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.signals;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.purple.value;
34 import std.c.stdarg;
35 
36 extern (C):
37 
38 alias void function () PurpleCallback;
39 alias void function (void function (), va_list, void*, void**) PurpleSignalMarshalFunc;
40 
41 
42 version(Derelict_Link_Static)
43 {
44     extern( C ) nothrow 
45     {
46         gulong purple_signal_register(void* instance, const(char)* signal, PurpleSignalMarshalFunc marshal, PurpleValue* ret_value, int num_values, ...);
47         void purple_signal_unregister(void* instance, const(char)* signal);
48         void purple_signals_unregister_by_instance(void* instance);
49         void purple_signal_get_values(void* instance, const(char)* signal, PurpleValue** ret_value, int* num_values, PurpleValue*** values);
50         gulong purple_signal_connect_priority(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data, int priority);
51         gulong purple_signal_connect(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data);
52         gulong purple_signal_connect_priority_vargs(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data, int priority);
53         gulong purple_signal_connect_vargs(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data);
54         void purple_signal_disconnect(void* instance, const(char)* signal, void* handle, PurpleCallback func);
55         void purple_signals_disconnect_by_handle(void* handle);
56         void purple_signal_emit(void* instance, const(char)* signal, ...);
57         void purple_signal_emit_vargs(void* instance, const(char)* signal, va_list args);
58         void* purple_signal_emit_return_1(void* instance, const(char)* signal, ...);
59         void* purple_signal_emit_vargs_return_1(void* instance, const(char)* signal, va_list args);
60         void purple_signals_init();
61         void purple_signals_uninit();
62         void purple_marshal_VOID(PurpleCallback cb, va_list args, void* data, void** return_val);
63         void purple_marshal_VOID__INT(PurpleCallback cb, va_list args, void* data, void** return_val);
64         void purple_marshal_VOID__INT_INT(PurpleCallback cb, va_list args, void* data, void** return_val);
65         void purple_marshal_VOID__POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
66         void purple_marshal_VOID__POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
67         void purple_marshal_VOID__POINTER_INT_INT(PurpleCallback cb, va_list args, void* data, void** return_val);
68         void purple_marshal_VOID__POINTER_INT_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
69         void purple_marshal_VOID__POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
70         void purple_marshal_VOID__POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
71         void purple_marshal_VOID__POINTER_POINTER_UINT_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
72         void purple_marshal_VOID__POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
73         void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
74         void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
75         void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
76         void purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
77         void purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
78         void purple_marshal_INT__INT(PurpleCallback cb, va_list args, void* data, void** return_val);
79         void purple_marshal_INT__INT_INT(PurpleCallback cb, va_list args, void* data, void** return_val);
80         void purple_marshal_INT__POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
81         void purple_marshal_INT__POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
82         void purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
83         void purple_marshal_BOOLEAN__POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
84         void purple_marshal_BOOLEAN__POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
85         void purple_marshal_BOOLEAN__POINTER_BOOLEAN(PurpleCallback cb, va_list args, void* data, void** return_val);
86         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
87         void purple_marshal_BOOLEAN__POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
88         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
89         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
90         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
91         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT(PurpleCallback cb, va_list args, void* data, void** return_val);
92         void purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
93         void purple_marshal_BOOLEAN__INT_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
94         void purple_marshal_POINTER__POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
95         void purple_marshal_POINTER__POINTER_INT(PurpleCallback cb, va_list args, void* data, void** return_val);
96         void purple_marshal_POINTER__POINTER_INT64(PurpleCallback cb, va_list args, void* data, void** return_val);
97         void purple_marshal_POINTER__POINTER_INT_BOOLEAN(PurpleCallback cb, va_list args, void* data, void** return_val);
98         void purple_marshal_POINTER__POINTER_INT64_BOOLEAN(PurpleCallback cb, va_list args, void* data, void** return_val);
99         void purple_marshal_POINTER__POINTER_POINTER(PurpleCallback cb, va_list args, void* data, void** return_val);
100     }
101 }
102 else
103 {
104     extern( C ) nothrow 
105     {
106         alias da_purple_signal_register = gulong function(void* instance, const(char)* signal, PurpleSignalMarshalFunc marshal, PurpleValue* ret_value, int num_values, ...);				
107         alias da_purple_signal_unregister = void function(void* instance, const(char)* signal);																								
108         alias da_purple_signals_unregister_by_instance = void function(void* instance);																										
109         alias da_purple_signal_get_values = void function(void* instance, const(char)* signal, PurpleValue** ret_value, int* num_values, PurpleValue*** values);							
110         alias da_purple_signal_connect_priority = gulong function(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data, int priority);						
111         alias da_purple_signal_connect = gulong function(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data);												
112         alias da_purple_signal_connect_priority_vargs = gulong function(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data, int priority);					
113         alias da_purple_signal_connect_vargs = gulong function(void* instance, const(char)* signal, void* handle, PurpleCallback func, void* data);											
114         alias da_purple_signal_disconnect = void function(void* instance, const(char)* signal, void* handle, PurpleCallback func);															
115         alias da_purple_signals_disconnect_by_handle = void function(void* handle);																											
116         alias da_purple_signal_emit = void function(void* instance, const(char)* signal, ...);																								
117         alias da_purple_signal_emit_vargs = void function(void* instance, const(char)* signal, va_list args);																				
118         alias da_purple_signal_emit_return_1 = void* function(void* instance, const(char)* signal, ...);																					
119         alias da_purple_signal_emit_vargs_return_1 = void* function(void* instance, const(char)* signal, va_list args);																		
120         alias da_purple_signals_init = void function();																																		
121         alias da_purple_signals_uninit = void function();																																	
122         alias da_purple_marshal_VOID = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																		
123         alias da_purple_marshal_VOID__INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																	
124         alias da_purple_marshal_VOID__INT_INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																
125         alias da_purple_marshal_VOID__POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																
126         alias da_purple_marshal_VOID__POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);															
127         alias da_purple_marshal_VOID__POINTER_INT_INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
128         alias da_purple_marshal_VOID__POINTER_INT_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);													
129         alias da_purple_marshal_VOID__POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
130         alias da_purple_marshal_VOID__POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);													
131         alias da_purple_marshal_VOID__POINTER_POINTER_UINT_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);											
132         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);												
133         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);										
134         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);								
135         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);											
136         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);									
137         alias da_purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);									
138         alias da_purple_marshal_INT__INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																	
139         alias da_purple_marshal_INT__INT_INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);																
140         alias da_purple_marshal_INT__POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
141         alias da_purple_marshal_INT__POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);												
142         alias da_purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);								
143         alias da_purple_marshal_BOOLEAN__POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);															
144         alias da_purple_marshal_BOOLEAN__POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);													
145         alias da_purple_marshal_BOOLEAN__POINTER_BOOLEAN = void function(PurpleCallback cb, va_list args, void* data, void** return_val);													
146         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);											
147         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);												
148         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);										
149         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);									
150         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);							
151         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);								
152         alias da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);					
153         alias da_purple_marshal_BOOLEAN__INT_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
154         alias da_purple_marshal_POINTER__POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);															
155         alias da_purple_marshal_POINTER__POINTER_INT = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
156         alias da_purple_marshal_POINTER__POINTER_INT64 = void function(PurpleCallback cb, va_list args, void* data, void** return_val);														
157         alias da_purple_marshal_POINTER__POINTER_INT_BOOLEAN = void function(PurpleCallback cb, va_list args, void* data, void** return_val);												
158         alias da_purple_marshal_POINTER__POINTER_INT64_BOOLEAN = void function(PurpleCallback cb, va_list args, void* data, void** return_val);												
159         alias da_purple_marshal_POINTER__POINTER_POINTER = void function(PurpleCallback cb, va_list args, void* data, void** return_val);	
160     }
161 
162     __gshared
163     {
164 	    da_purple_signal_register purple_signal_register;
165 	    da_purple_signal_unregister purple_signal_unregister;
166 	    da_purple_signals_unregister_by_instance purple_signals_unregister_by_instance;
167 	    da_purple_signal_get_values purple_signal_get_values;
168 	    da_purple_signal_connect_priority purple_signal_connect_priority;
169 	    da_purple_signal_connect purple_signal_connect;
170 	    da_purple_signal_connect_priority_vargs purple_signal_connect_priority_vargs;
171 	    da_purple_signal_connect_vargs purple_signal_connect_vargs;
172 	    da_purple_signal_disconnect purple_signal_disconnect;
173 	    da_purple_signals_disconnect_by_handle purple_signals_disconnect_by_handle;
174 	    da_purple_signal_emit purple_signal_emit;
175 	    da_purple_signal_emit_vargs purple_signal_emit_vargs;
176 	    da_purple_signal_emit_return_1 purple_signal_emit_return_1;
177 	    da_purple_signal_emit_vargs_return_1 purple_signal_emit_vargs_return_1;
178 	    da_purple_signals_init purple_signals_init;
179 	    da_purple_signals_uninit purple_signals_uninit;
180 	    da_purple_marshal_VOID purple_marshal_VOID;
181 	    da_purple_marshal_VOID__INT purple_marshal_VOID__INT;
182 	    da_purple_marshal_VOID__INT_INT purple_marshal_VOID__INT_INT;
183 	    da_purple_marshal_VOID__POINTER purple_marshal_VOID__POINTER;
184 	    da_purple_marshal_VOID__POINTER_UINT purple_marshal_VOID__POINTER_UINT;
185 	    da_purple_marshal_VOID__POINTER_INT_INT purple_marshal_VOID__POINTER_INT_INT;
186 	    da_purple_marshal_VOID__POINTER_INT_POINTER purple_marshal_VOID__POINTER_INT_POINTER;
187 	    da_purple_marshal_VOID__POINTER_POINTER purple_marshal_VOID__POINTER_POINTER;
188 	    da_purple_marshal_VOID__POINTER_POINTER_UINT purple_marshal_VOID__POINTER_POINTER_UINT;
189 	    da_purple_marshal_VOID__POINTER_POINTER_UINT_UINT purple_marshal_VOID__POINTER_POINTER_UINT_UINT;
190 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER purple_marshal_VOID__POINTER_POINTER_POINTER;
191 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER;
192 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER;
193 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER_UINT purple_marshal_VOID__POINTER_POINTER_POINTER_UINT;
194 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_UINT;
195 	    da_purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT;
196 	    da_purple_marshal_INT__INT purple_marshal_INT__INT;
197 	    da_purple_marshal_INT__INT_INT purple_marshal_INT__INT_INT;
198 	    da_purple_marshal_INT__POINTER_POINTER purple_marshal_INT__POINTER_POINTER;
199 	    da_purple_marshal_INT__POINTER_POINTER_POINTER purple_marshal_INT__POINTER_POINTER_POINTER;
200 	    da_purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER purple_marshal_INT__POINTER_POINTER_POINTER_POINTER_POINTER;
201 	    da_purple_marshal_BOOLEAN__POINTER purple_marshal_BOOLEAN__POINTER;
202 	    da_purple_marshal_BOOLEAN__POINTER_POINTER purple_marshal_BOOLEAN__POINTER_POINTER;
203 	    da_purple_marshal_BOOLEAN__POINTER_BOOLEAN purple_marshal_BOOLEAN__POINTER_BOOLEAN;
204 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER purple_marshal_BOOLEAN__POINTER_POINTER_POINTER;
205 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_UINT purple_marshal_BOOLEAN__POINTER_POINTER_UINT;
206 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_UINT;
207 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER;
208 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER;
209 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT;
210 	    da_purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER;
211 	    da_purple_marshal_BOOLEAN__INT_POINTER purple_marshal_BOOLEAN__INT_POINTER;
212 	    da_purple_marshal_POINTER__POINTER purple_marshal_POINTER__POINTER;
213 	    da_purple_marshal_POINTER__POINTER_INT purple_marshal_POINTER__POINTER_INT;
214 	    da_purple_marshal_POINTER__POINTER_INT64 purple_marshal_POINTER__POINTER_INT64;
215 	    da_purple_marshal_POINTER__POINTER_INT_BOOLEAN purple_marshal_POINTER__POINTER_INT_BOOLEAN;
216 	    da_purple_marshal_POINTER__POINTER_INT64_BOOLEAN purple_marshal_POINTER__POINTER_INT64_BOOLEAN;
217         da_purple_marshal_POINTER__POINTER_POINTER purple_marshal_POINTER__POINTER_POINTER;
218     }
219 }